package formater;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.util.Locale;

import javax.swing.JFormattedTextField;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.MaskFormatter;
import javax.swing.text.NumberFormatter;

public class MaskFormater {
	public static MaskFormatter maskData(JFormattedTextField textfield) throws ParseException{  
		MaskFormatter mask = null;  
		// nessa linha abaixo vc define o formato, então ###.###.###-## seria para cpf  
		mask = new MaskFormatter("##/##/####");  
		//permite sobrescrever os caracteres padrão de separação das barras ( _ )  
		mask.setOverwriteMode(true);  
		//os caracteres permitidos para digitação  
		mask.setValidCharacters("0123456789");  
		//tipo de caracter que ficará nos espaços para serem preenchidos  
		mask.setPlaceholderCharacter('_');  
		//instala a mascara no maskFormat e retorna no return abaixo  
		mask.install(textfield);  
		return mask;  
	}
	
	public static MaskFormatter maskCPF(JFormattedTextField textfield) throws ParseException{  
		MaskFormatter mask = null;  
		// nessa linha abaixo vc define o formato, então ###.###.###-## seria para cpf  
		mask = new MaskFormatter("###.###.###-##");  
		//permite sobrescrever os caracteres padrão de separação das barras ( _ )  
		mask.setOverwriteMode(true);  
		//os caracteres permitidos para digitação  
		mask.setValidCharacters("0123456789");  
		//tipo de caracter que ficará nos espaços para serem preenchidos  
		mask.setPlaceholderCharacter('_');  
		//instala a mascara no maskFormat e retorna no return abaixo  
		mask.install(textfield);  
		return mask;  
	}
	
	public static DefaultFormatterFactory maskMoeda() {
		NumberFormatter defaultFormatter = new NumberFormatter(new DecimalFormat("###,###,###.##"));
		   NumberFormatter displayFormatter = 
		       new NumberFormatter(new DecimalFormat("###,###,###.00"));
		   NumberFormatter editFormatter = new NumberFormatter(new DecimalFormat("###,###,###.00")); 
		// set their value classes
		   defaultFormatter.setValueClass(Double.class);
		   editFormatter.setOverwriteMode(true);
		   displayFormatter.setValueClass(Double.class);
		   editFormatter.setValueClass(Double.class);
		   editFormatter.setOverwriteMode(true);
		// create and set the DefaultFormatterFactory
		   DefaultFormatterFactory moeda = 
		       new DefaultFormatterFactory(defaultFormatter,displayFormatter,editFormatter);
		   return moeda;
	}
}
